--[[
红果APP - 懒人学习脚本 (重构版)
功能：整合分离后的模块，提供主程序入口
--]]

-- 加载UI配置
local success, err = pcall(function()
    require("ui_config")
end)

if not success then
    print("加载UI配置失败: " .. tostring(err))
    print("使用默认UI配置...")
    
    -- 设置默认UI配置
    _G.功能选择 = "滑动刷视频"
    _G.话术语 = "默认话术"
    _G.任务间隔 = "1000"
    _G.运行时间 = 3  -- 默认3分钟
    _G.点赞概率 = 99
    _G.收藏概率 = 66
    _G.自动关注 = false
    _G.自动评论 = false
    _G.互动方式 = 0
    _G.密码设置 = ""
    
    -- 设置默认HUD配置
    _G.HUD配置 = {
        启用HUD = true,
        宽度 = 500,
        高度 = 22,
        X位置 = 0,
        Y位置 = 80,
        字体大小 = 10,
        最大日志数 = 6,
        字体颜色 = "0xffff0000",
        背景颜色 = "0x60ffffff",
        日志格式 = "{时间} {内容}"
    }
    
    -- 创建获取HUD配置函数
    _G.获取HUD配置 = function()
        return _G.HUD配置
    end
else
    print("UI配置加载成功")
end

-- 导入基础功能
require("base_functions")

-- 导入模块
local node_config = require("node_config")
local 初始化分辨率设置 = require("screen_and_resolution.初始化分辨率设置")
local 时间控制模块 = require("time_control.功能_时间控制业务逻辑")
local 功能_滑动刷视频 = require("video_features.功能_滑动刷视频")
local 功能_搜索关键词刷视频 = require("video_features.功能_搜索关键词刷视频")
local 测试环境函数可用性模块 = require("testing.测试环境函数可用性")
local 测试打开APP模块 = require("testing.测试打开APP")
local 处理按钮事件 = require("ui_handlers.处理按钮事件")
local 处理收藏意外弹窗 = require("ui_handlers.处理收藏意外弹窗")

-- 将必要函数导出到全局命名空间
_G.处理收藏意外弹窗 = 处理收藏意外弹窗
_G.处理按钮事件 = 处理按钮事件

-- 兼容性处理：如果keypress不存在，使用模拟按键函数替代
if not _G.keypress then
    _G.keypress = _G.模拟按键
    if _G.调试输出 then
        _G.调试输出("创建keypress函数的兼容性替代")
    end
end

-- 计算总运行时间（秒）
local 总运行时间 = 0
if _G.运行时间 then
    -- 确保运行时间是有效的数字
    if type(_G.运行时间) == "number" and _G.运行时间 > 0 then
        总运行时间 = _G.运行时间 * 60
    else
        -- 尝试转换字符串值
        local 数值 = tonumber(_G.运行时间)
        if 数值 and 数值 > 0 then
            总运行时间 = 数值 * 60
        else
            总运行时间 = 3 * 60  -- 默认3分钟
        end
    end
else
    总运行时间 = 3 * 60  -- 默认3分钟
end

print("设置总运行时间: " .. 总运行时间 .. "秒 (" .. (总运行时间/60) .. "分钟)")

-- 初始化时间控制模块
时间控制模块.初始化时间控制({
    总运行时间 = 总运行时间,
    福利检查间隔 = 1800,  -- 默认30分钟检查一次福利
    是否启用时间控制 = true
})

-- 程序清理函数
local function 程序清理()
    if _G.调试输出 then
        _G.调试输出("清理资源...")
    else
        print("清理资源...")
    end
    
    -- 清理HUD资源
    if _G.销毁HUD then
        _G.销毁HUD()
    end
    
    if _G.调试输出 then
        _G.调试输出("程序结束")
    else
        print("程序结束")
    end
end

-- 主程序
local function 主程序()
    -- 使用pcall处理错误
    local success, error_msg = pcall(function()
        -- 检查node_config是否加载成功
        if node_config == nil then
            error("node_config 模块加载失败")
        end
        
        -- 检查必要的节点配置
        if node_config.APP包名 == nil then
            error("node_config 中缺少APP包名配置")
        end
        
        -- 尝试初始化HUD系统
        local hud_id = nil
        local hud_success, hud_error = pcall(function()
            if _G.初始化HUD系统 then
                hud_id = _G.初始化HUD系统({
                    最大日志数 = 6,
                    字体大小 = 10,
                    字体颜色 = "0xffff0000",
                    背景颜色 = "0x60ffffff",  -- 半透明白色背景
                    Y位置 = 80,
                    宽度 = 500,
                    高度 = 22
                })
            end
            return hud_id
        end)
        
        if not hud_success then
            print("HUD系统初始化失败: " .. tostring(hud_error) .. "，将使用简单输出")
        end
        
        -- 输出启动信息
        print("懒人学习脚本已启动")
        print("当前功能: " .. (_G.功能选择 or "未选择"))
        print("运行时间设置: " .. 总运行时间 / 60 .. "分钟")
        
        -- 如果HUD正常，也通过HUD输出
        if _G.HUD是否可用 and _G.HUD是否可用() then
            _G.调试输出("懒人学习脚本已启动", 0)
            _G.调试输出("当前功能: " .. (_G.功能选择 or "未选择"), 0)
            _G.调试输出("运行时间设置: " .. 总运行时间 / 60 .. "分钟", 0)
        end
        
        -- 根据选择执行不同功能
        if _G.功能选择 == "搜索关键词刷视频" then
            功能_搜索关键词刷视频({
                搜索关键词 = _G.话术语
            })
        elseif _G.功能选择 == "HUD日志演示" then
            if _G.演示HUD日志系统 then
                _G.演示HUD日志系统()
            else
                print("演示HUD日志系统函数不存在")
            end
        elseif _G.功能选择 == "测试打开APP" then
            测试打开APP模块()
        elseif _G.功能选择 == "测试环境函数" then
            测试环境函数可用性模块()
        else
            -- 默认功能
            功能_滑动刷视频()
        end
    end)
    
    -- 程序结束时处理错误
    if not success then
        print("脚本执行出错: " .. tostring(error_msg))
        -- 如果HUD可用，显示错误
        if _G.HUD是否可用 and _G.HUD是否可用() and _G.错误日志 then
            _G.错误日志("脚本执行出错: " .. tostring(error_msg))
            sleep(3000)  -- 显示一段时间让用户看到错误
        end
    end
    
    -- 最后调用清理函数
    pcall(程序清理)  -- 使用pcall防止清理过程中出错
    
    print("脚本执行结束")
end

-- 主函数（扩展功能）
local function 主函数()
    -- 初始化分辨率设置
    初始化分辨率设置()
    
    -- 加载最新节点配置
    if _G.识别节点ID and type(_G.识别节点ID) == "function" then
        if _G.调试输出 then
            _G.调试输出("尝试识别最新节点ID...")
        end
        _G.识别节点ID()
    end
    
    -- 初始化HUD系统
    if _G.初始化HUD系统 and _G.HUD配置 then
        _G.初始化HUD系统(_G.HUD配置)
    end
    
    -- 功能选择
    if _G.功能选择 == "滑动刷视频" then
        功能_滑动刷视频()
    elseif _G.功能选择 == "搜索关键词刷视频" then
        功能_搜索关键词刷视频({
            搜索关键词 = _G.话术语
        })
    elseif _G.功能选择 == "测试打开APP" then
        测试打开APP模块()
    elseif _G.功能选择 == "测试环境函数" then
        测试环境函数可用性模块()
    else
        功能_滑动刷视频()  -- 默认功能
    end
end

-- 将主函数添加到全局
_G.主函数 = 主函数
_G.主程序 = 主程序
_G.程序清理 = 程序清理

-- 启动脚本
if not _G.__SCRIPT_ALREADY_RUNNING then
    _G.__SCRIPT_ALREADY_RUNNING = true
    
    -- 检查环境
    if not _G.keypress and not _G.press and not _G.pressKey then
        print("警告: 未找到按键模拟函数，已创建兼容性替代")
    end
    
    -- 运行环境函数可用性测试
    pcall(测试环境函数可用性模块)
    
    -- 初始化分辨率设置
    pcall(初始化分辨率设置)
    
    -- 启动主程序
    主程序()
end

return {
    主程序 = 主程序,
    主函数 = 主函数,
    程序清理 = 程序清理,
    处理按钮事件 = 处理按钮事件
} 